#include "editErrorCostHolders.h"

#include <string>
#include <vector>
#include <memory>

class levenshteinDistanceCalculator {
public:
	levenshteinDistanceCalculator() : defaultCostHolder( new editOperationsCostHolderBase() ) {}
	double distance( const std::string& source, const std::string& target, const editOperationsCostHolderBase* costHolder = 0, bool allowTransposition = false );
private:
	void initDistanceMatrix( std::vector<std::vector<double > >& distanceMatrix );
	std::auto_ptr<editOperationsCostHolderBase> defaultCostHolder;
};
